﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using Csla;
using Presupuestos.Negocio.Editables;
using Presupuestos.Windows.Interfaces;
using Presupuestos.Windows.Configuraciones;

namespace Presupuestos.Windows
{
    public partial class MainForm : DevExpress.XtraBars.Ribbon.RibbonForm
    {

        private IMantenimiento mantenimiento;

        public MainForm()
        {
            InitializeComponent();
        }

        #region Presupuestos
        private void nbiPresupuesto_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }
        #endregion

        #region Configuraciones
        private void nbiUsuarios_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                mantenimiento = new mntUsuarios() { ObjetoUsuario = Usuario.NewUsuario() };
                Control ctrl = (Control)mantenimiento;
                ctrl.Dock = DockStyle.Fill;
                panelControl1.Controls.Clear();
                panelControl1.Controls.Add(ctrl);
                rbpConfiguracion.Visible = true;
                rbpGeneral.Visible = false;
                rpgConfiguraciones.Text = "Usuarios";
                mantenimiento.Formulario(sender, e);
            }
            catch (DataPortalException ex)
            { MessageBox.Show(ex.BusinessException.Message, "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Information); }
            catch (Exception ex)
            { MessageBox.Show(ex.Message, "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Information); }
            finally
            { this.Cursor = Cursors.Default; }

        }

        private void nbiLocales_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }

        private void nbiTipoGasto_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }

        private void nbiMonedas_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }
        #endregion

        #region Reportes
        private void nbiReporteUtilidades_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }

        private void nbiReporteIngresos_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }

        private void nbiReporteGastos_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }
        #endregion

        #region Indicadores
        private void nbiIndicadoresGenerales_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

        }
        #endregion

        #region Botones de Configuracion
        private void Botones(bool condicion)
        {
            bbiNuevo.Enabled = !condicion;
            bbiEditar.Enabled = !condicion;
            bbiGrabar.Enabled = condicion;
            bbiCancelar.Enabled = condicion;
            bbiEliminar.Enabled = !condicion;
            bbiActualizar.Enabled = !condicion;
        }
        private void bbiNuevo_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Nuevo(sender, e);
                Botones(true);
            }
        }

        private void bbiEditar_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Editar(sender, e);
                Botones(true);
            }
        }

        private void bbiGrabar_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Grabar(sender, e);
                if (mantenimiento.ConError == false)
                {
                    Botones(false);
                    mantenimiento.Actualizar(sender, e);
                }
            }
        }

        private void bbiCancelar_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Cancelar(sender, e);
                Botones(false);
            }
        }

        private void bbiEliminar_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Eliminar(sender, e);
                if (mantenimiento.ConError == false)
                {
                    Botones(false);
                    mantenimiento.Actualizar(sender, e);
                }
            }
        }

        private void bbiActualizar_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (mantenimiento != null)
            {
                mantenimiento.Actualizar(sender, e);
            }
        }
        #endregion
    }
}